package com.bytezero.exer;
 /**
  * 
  * @Description 
  * @author  Bytezero·zhenglei!      Email:420498246@qq.com
  * @version
  * @date 2021年9月12日上午9:06:47
  * @
  *   对象数组题目
  * 定义类：Student,包含三个属性：学号number(int),年级state(int),
  *   成绩score(int)
  * 创建20个学生对象，学号为1-20，年级和成绩都有随机数确定
  * 问题一：打印出3年级（state值为3）的学生信息
  * 问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息
  * 
  *  提示：生成随机数 Math.random(),返回值double
  *        四舍五入取整数：Math.round(double d),返回值类型long
  */

/***********    改进    **********/
/*将操作数组的功能封装到方法中*/



public class StudentTest2
{
	public static void main(String[] args)
	{
		//声明Student类型的数组
		Student2[] stus = new Student2[20];
		for(int i =0; i <stus.length;i++)
		{
			//给数组元素赋值
			stus[i] = new Student2();
			//给student对象的属性赋值
			stus[i].number= (i+1);
			//要求年级[1-6]
			stus[i].state =(int)(Math.random()*(6-1+1)+1);
			//成绩 [0-100]
			stus[i].score = (int)(Math.random()*(100-0+1)+0);
		}
		
		StudentTest2 test = new StudentTest2();
		//遍历学生数组
		test.print(stus);
     
	    //问题一：打印出3年级（state值为3）的学生信息
		System.out.println("******************************************");
        System.out.println("问题一：打印出3年级（state值为3）的学生信息");
         test.serchState(stus, 3);
        
		
		//问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息
		System.out.println("******************************************");
		System.out.println( "问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息");
	    test.sort(stus);
	    //遍历学生数组
	    test.print(stus);

	}
	
	/**
	 * 
	 * @Description 遍历Student2[]数组的操作
	 * @author  Bytezero·zhenglei!
	 * @date 2021年9月12日上午9:56:45
	 * @param stus
	 *
	 */
	public void print(Student2[] stus)
	{
		//遍历学生数组
		for(int i =0; i <stus.length; i++)
		{
			//System.out.println(stus[i].number+"\t"+stus[i].score+"\t"+stus[i].state);
				
			System.out.println(stus[i].info());
		}
	}
	
	/**
	 * 
	 * @Description  查找Student数组中指定的学生信息
	 * @author  Bytezero·zhenglei!
	 * @date 2021年9月12日上午9:52:52
	 * @param stus  要查找的数组
	 * @param state  要找的年级
	 *
	 */
  public void serchState(Student2[] stus,int state)
  {
	//问题一：打印出3年级（state值为3）的学生信息
	for(int i = 0; i <stus.length;i++)
	{
		if(stus[i].state==state)
		{
			System.out.println(stus[i].info());
		}
	
	}
  }
	
  /**
   * 
   * @Description  给Student2数组排序  
   * @author  Bytezero·zhenglei!
   * @date 2021年9月12日上午9:55:35
   * @param stus
   *
   */
  public void sort(Student2[] stus)
  {
	  for(int i =0;i <stus.length-1;i++)
	   {
		   for(int j =0;j<stus.length-1-i;j++)
		   {
			   if(stus[j].score>stus[j+1].score)
			   {
				   //交换的是数组的元素：Student对象！！！
				   Student2 temp = stus[j];
				   stus[j] = stus[j+1];
				   stus[j+1] = temp;
			   }
		   }
	   }
  }
  
  
	
	
}

class Student2
{
	int number;   //学号
	int state;	  //年级
	int score;    //成绩
	
	
	//显示学生信息的方法
	public String info()
	{
		return"学号:"+number+"\t年级:"+state+"\t成绩:"+score;
	}
	
}






















